//给你两个二进制字符串，返回它们的和（用二进制表示）。 
//
// 输入为 非空 字符串且只包含数字 1 和 0。 
//
// 
//
// 示例 1: 
//
// 输入: a = "11", b = "1"
//输出: "100" 
//
// 示例 2: 
//
// 输入: a = "1010", b = "1011"
//输出: "10101" 
//
// 
//
// 提示： 
//
// 
// 每个字符串仅由字符 '0' 或 '1' 组成。 
// 1 <= a.length, b.length <= 10^4 
// 字符串如果不是 "0" ，就都不含前导零。 
// 
// 👍 725 👎 0


//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public String addBinary(String a, String b) {
        int aLength=a.length()-1;
        int bLebgth=b.length()-1;
        StringBuilder res = new StringBuilder();
        int carray=0;
        while (aLength >= 0||bLebgth>=0|| carray!=0){
            int aNum=aLength>=0?a.charAt(aLength)-'0': 0;
            int bNum = bLebgth>=0?b.charAt(bLebgth)-'0':0;
            int sum=carray+bNum+aNum;
            carray=sum>=2?1:0;
            sum=sum>=2?sum-2:sum;
            res.append(sum);
            aLength--;
            bLebgth--;
        }
        return res.reverse().toString();
    }
}
//leetcode submit region end(Prohibit modification and deletion)
